*
* $Id$
*
* $Log: upkbyt.F,v $
* Revision 1.1.1.1  1999/05/18 15:55:32  fca
* AliRoot sources
*
* Revision 1.1.1.1  1996/02/15 17:50:22  mclareni
* Kernlib
*
*
      SUBROUTINE UPKBYT (MBV,JTHP,MIV,NINTP,NBITS)
C
C CERN PROGLIB# M422    UPKBYT          .VERSION KERNSUN  1.06  920511
C ORIG. 22/09/88, JZ
C
      DIMENSION    MIV(99), MBV(99), JTHP(9), NINTP(9), NBITS(2)

      JTH  = JTHP(1)
      NINT = NINTP(1)
      IF (NINT.LE.0)         RETURN

      NZB  = NBITS(1)
      IF (NZB.GT.0)          GO TO 11
      NZB  = 1
      NPWD = 32
      MASK = 1
      GO TO 12

   11 NPWD = NBITS(2)
#if defined(CERNLIB_BUGLRSHFT)
      MASK = ishft (-1,NZB-32)
#endif
#if !defined(CERNLIB_BUGLRSHFT)
      MASK = lrshft (-1,32-NZB)
#endif

   12 JBV  = 1
      JIV  = 0
      IF (JTH.LT.2)          GO TO 21
      JBV  = (JTH-1)/NPWD + 1
      JPOS = JTH - (JBV-1)*NPWD - 1
      IF (JPOS.EQ.0)         GO TO 21
      NR   = JPOS*NZB
      JIVE = NPWD - JPOS
#if defined(CERNLIB_BUGLRSHFT)
      IZW  =  ishft (MBV(JBV), -NR)
#endif
#if !defined(CERNLIB_BUGLRSHFT)
      IZW  = lrshft (MBV(JBV), NR)
#endif
      GO TO 22

C--                UNPACK EACH WORD

   21 JIVE = JIV + NPWD
      IZW  = MBV(JBV)
   22 JIVE = MIN0 (NINT,JIVE)

   24 JIV  = JIV + 1
      MIV(JIV) = AND (MASK,IZW)
      IF (JIV.EQ.JIVE)       GO TO 27
#if defined(CERNLIB_BUGLRSHFT)
      IZW  =  ishft (IZW,-NZB)
#endif
#if !defined(CERNLIB_BUGLRSHFT)
      IZW  = lrshft (IZW, NZB)
#endif
      GO TO 24

   27 IF (JIV.EQ.NINT)       RETURN
      JBV  = JBV + 1
      GO TO 21
      END
